package com.simple.cms.common.utils;


import org.apache.commons.lang3.StringUtils;

public class MoneyUtils {

    /**
     * 单元为“元”的金额转化成单位为“分”<br>
     * 金额 10.32 ——》1032
     *
     * @param yuan 单元为“元”的金额
     * @return
     */
    public static String toStringCent(String yuan) {
        if (StringUtils.isBlank(yuan)) {
            return "";
        }
        Money money = new Money(yuan);
        return String.valueOf(money.getCent());
    }

    /**
     * 单元为“元”的金额转化成单位为“分”<br>
     * 金额 10.32 ——》1032
     *
     * @param yuan 单元为“元”的金额
     * @return
     */
    public static long toLongCent(String yuan) {
        if (StringUtils.isBlank(yuan)) {
            return 0L;
        }
        Money money = new Money(yuan);
        return money.getCent();
    }

    /**
     * 单元为“分”的金额转化成单位为“元”<br>
     * 金额 1032 ——》10.32
     *
     * @param cent 单元为“分”的金额
     * @return
     */
    public static String toYuan(String cent) {
        if (StringUtils.isBlank(cent)) {
            return "";
        }
        Money money = new Money();
        money.setCent(Long.valueOf(cent));
        return money.toString();
    }

    /**
     * 单元为“分”的金额转化成单位为“元”
     * <pre>
     * MoneyUtils.toYuan(null)      = "";
     * MoneyUtils.toYuan(0L)        = "0.00";
     * MoneyUtils.toYuan(1032L)     = "10.32";
     * </pre>
     *
     * @param cent 单元为“分”的金额
     * @return
     */
    public static String toYuan(Long cent) {
        if (cent == null) {
            return "";
        }
        Money money = new Money();
        money.setCent(cent);
        return money.toString();
    }

    /**
     * 减后的金额
     *
     * @param oriYuan
     * @param diffFen
     * @return
     */
    public static String diffYuan(String oriYuan, long diffFen) {
        if (StringUtils.isBlank(oriYuan)) {
            return "";
        }
        Money money = new Money(oriYuan);
        Money diffMoney = new Money();
        diffMoney.setCent(money.getCent() - diffFen);
        return diffMoney.toString();
    }

    /**
     * 整数位前补零,小数位补齐2位<br>
     * 无效格式如123，.10，1.1,<br>
     * 有效格式如1.00，0.10
     *
     * @param yuan 单元为“元”的金额
     * @return
     */
    public static String formatYuan(String yuan) {
        if (StringUtils.isBlank(yuan)) {
            return "";
        }
        Money money = new Money(yuan);
        return money.toString();
    }
}